题目描述
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。
示例 1:
1 | 输入: [0,1,3] |
示例 2:
1 | 输入: [0,1,2,3,4,5,6,7,9] |
限制:
$1 <= 数组长度 <= 10000$
算法
(二分) $O(logn)$
已知每个数字在 0 ~ n - 1 之间,但里面少一个数,观察数组的特点可以发现少的那个数一定是第一个大于当前下标的数,即 nums[i] > i
,因此可以通过二分 $[0, n - 1]$ 区间寻找答案。
如果二分没有找到答案那么说明缺少的那个数就是 n - 1。
注意:分析的时候长度是 n - 1,代码实现 n 代表的就是数组的长度。
时间复杂度
$O(logn)$
空间复杂度
$O(1)$
代码
1 | class Solution { |